package com.hlju.reggie.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hlju.reggie.bean.Cart;
import com.hlju.reggie.common.BaseContext;
import com.hlju.reggie.mapper.CartMapper;
import com.hlju.reggie.service.CartService;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;

@Service
public class CartServiceImpl extends ServiceImpl<CartMapper, Cart> implements CartService {
    @Override
    public Cart addCart(Cart cart) {
        //获取当前登录的用户ID
        Long currentId = BaseContext.getCurrentId();
        //给对象设置用户ID
        cart.setUserId(currentId);
        //获取当前传递过来的数据
        Long dishId = cart.getDishId();
        //创建条件构造器
        QueryWrapper<Cart> wrapper = new QueryWrapper<>();
        wrapper.eq("user_id", currentId);
        //判断是菜品还是套餐
        if (dishId != null) {
            wrapper.eq("dish_id", dishId);
        } else {
            wrapper.eq("setmeal_id", cart.getSetmealId());
        }
        //根据条件查询当前用户购物车数据（本次提交的）
        Cart carData = this.getOne(wrapper);
        //判断是否存在
        if (carData != null) {
            //如果已存在 更新数量（原本的数量+1）
            carData.setNumber(carData.getNumber() + 1);
            //执行更新
            this.updateById(carData);
        }else{
            //如果不存在 执行添加数据（数量默认为1）
            cart.setNumber(1);
            cart.setCreateTime(LocalDateTime.now());
            //执行保存
            this.save(cart);
            carData = cart;
        }
        //返回购物车对象
        return carData;
    }
}
